package com.syq.controller;

import com.syq.dto.DTO;
import com.syq.entity.Coursetype;
import com.syq.page.PageInfo;
import com.syq.service.CoursetypeService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@CrossOrigin
@Controller
@RequestMapping("/coursetypeController")
public class CoursetypeController {
	@Resource
	CoursetypeService coursetypeService;
	//@RequiresPermissions("coursetype:getAll")
	@RequestMapping("/coursetypes")
	@ResponseBody //把方法的返回值按json转换之后 输出到浏览器
    public DTO<Coursetype> getAllCoursetype() throws Exception {
    	System.out.println("查询全部课程类型");
		return coursetypeService.getAllCoursetypes();
    }

	@RequestMapping("/deleteCoursetypeByCtno/{ctno}")
	@ResponseBody
    public DTO<Coursetype> deleteCoursetypeByCtno(@PathVariable("ctno") String ctno) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
    	System.out.println(ctno+"删除课程类型");
    	return coursetypeService.deleteCoursetypeByCtno(ctno);
    }

	//@RequestMapping("/updateCoursetypeByCtno")
	@PatchMapping("/coursetypes")
	@ResponseBody
	public DTO<Coursetype> updateCoursetypeByCtno(@RequestBody Coursetype coursetype) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("修改课程类型");
		return coursetypeService.updateCoursetypeByCtno(coursetype);
	}
    //@SystemMail(op = "Coursetype:addCoursetype",queueName = "family.mail",module = "课程类型管理",methods = "课程类型注册")
	//@RequestMapping("/addCoursetype")
	@PostMapping("/coursetypes")
	@ResponseBody
	public DTO<Coursetype> addCoursetype(@RequestBody Coursetype coursetype) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("增加课程类型");
 		return coursetypeService.addCoursetype(coursetype);
	}

	@RequestMapping("/coursetypes/page")
	@ResponseBody
	public DTO<Coursetype> getCoursetypeByPage(PageInfo pageInfo) throws Exception{//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("分页课程类型");
		return coursetypeService.getCoursetypeByPage(pageInfo);
	}
	//@RequiresPermissions("coursetype:selectCoursetypeWithChildren")
//	@RequestMapping("/selectCoursetypeWithChildren/{ctno}")
//	@ResponseBody
//	public DTO<Coursetype> selectCoursetypeWithChildren(@PathVariable("ctno") String ctno) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("查询课程类型附上儿童");
//		return coursetypeService.selectCoursetypeWithChildren(ctno);
//	}
//	//@RequiresPermissions("coursetype:getCoursetypeWithOrdrees")
//	@RequestMapping("/getCoursetypeWithOrdrees/{ctno}")
//	@ResponseBody
//	public DTO<Coursetype> getCoursetypeWithOrdrees(@PathVariable("ctno") String ctno ) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("查询订单");
//		return coursetypeService.getCoursetypeWithOrdrees(ctno);
//	}

//	@RequestMapping("/getOrderCookie/{ctno}")
//	@ResponseBody
//	public DTO<Coursetype> getOrderCookie(@PathVariable("ctno") String ctno, HttpServletRequest request, HttpServletResponse response) throws Exception{
//		//cookie是以key value形式存放在浏览器的文本
//		ObjectMapper objectMapper = new ObjectMapper();
//		DTO dto = new DTO(200, "cookie选课获取成功");
//		Cookie[] cookies = request.getCookies();
//		Coursetype coursetype = null;
//		if(Optional.ofNullable(cookies).isPresent()){
//			List<Orderrecord> orderrecords = new ArrayList<Orderrecord>();
//			for(Cookie cookie :cookies){
//				if(cookie.getName().indexOf("coursetype" + ctno+"_")>=0){
//					Orderrecord orderrecord = objectMapper.readValue(URLDecoder.decode(cookie.getValue()), Orderrecord.class);
//					orderrecords.add(orderrecord);
//				}
//				if(cookie.getName().equals("coursetype" + ctno)){
//					coursetype = objectMapper.readValue(URLDecoder.decode(cookie.getValue()), Coursetype.class);
//				}
//
//			}
//			if(Optional.ofNullable(coursetype).isPresent()){
//				coursetype.setOrderrecords(orderrecords);
//				dto.setT(coursetype);
//			}else{
//				dto.setCode(404);
//				dto.setMsg("没有cookie");
//			}
//		}
//
//
//		return dto;
//	}

//	public DTO<Coursetype> saveSelectCourseCookieProcess(Coursetype coursetype, HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException, UnsupportedEncodingException {
//		//cookie是以key value形式存放在浏览器的文本
//		DTO dto = new DTO(200,"订单保存成功");
//		if(coursetype.getCtno()!=null) {
//			ObjectMapper objectMapper = new ObjectMapper();
//			List<Orderrecord> orderrecords = new ArrayList<>(coursetype.getOrderrecords());
//			for (Orderrecord orderrecord : coursetype.getOrderrecords()) {
//				Cookie orderrecordsCookie = new Cookie("coursetype" + coursetype.getCtno() + "_" + orderrecord.getOrrno(), URLEncoder.encode(objectMapper.writeValueAsString(orderrecord), "UTF-8"));
//
//				//coursetypeCookie.setMaxAge(30*24*60*60);   //存活期为一个月 30*24*60*60
//				orderrecordsCookie.setPath("/");
//				orderrecordsCookie.setDomain("localhost");
//				orderrecordsCookie.setMaxAge(2 * 24 * 60 * 60);   //存活期为2天 2*24*60*60
//				response.addCookie(orderrecordsCookie);
//
//			}
//			coursetype.setOrderrecords(null);
//			Cookie coursetypeCookie = new Cookie("coursetype" + coursetype.getCtno(), URLEncoder.encode(objectMapper.writeValueAsString(coursetype), "UTF-8"));
//			coursetypeCookie.setPath("/");
//			coursetypeCookie.setDomain("localhost");
//			coursetypeCookie.setMaxAge(2 * 24 * 60 * 60);   //存活期为2天 2*24*60*60
//			response.addCookie(coursetypeCookie);
//			coursetype.setOrderrecords(orderrecords);
//		}else{
//			dto.setCode(406);
//			dto.setMsg("缺少必要的参数，非法操作");
//		}
//		return dto;
//	}

//@RequestMapping("/sendCodeMail/{ctname}")
//@ResponseBody
//public DTO<Coursetype> sendCodeMail(@PathVariable("ctname") String ctname) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//	System.out.println("找回密码");
//	return coursetypeService.sendCodeMail(ctname);
//}
//	@RequestMapping("/updateCoursetypeByPwd")
//	@ResponseBody
//	public DTO<Coursetype> updateCoursetypeByPwd( CoursetypeVo coursetypeVo) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("修改密码"+coursetypeVo);
//		System.out.println(coursetypeVo);
//		return coursetypeService.updateCoursetypeByPwd(coursetypeVo);
//	}
//
//	@RequestMapping("/activate/{ctno}")
//	@ResponseBody
//	public DTO<Coursetype> activate(@PathVariable("ctno") String ctno) throws Exception{
//
//		return coursetypeService.activate(ctno);
//	}

}